#include<iostream>
using namespace std;
typedef long long LL;
const int N=60;
int a[N][N];
int p[N];
int n,D;
int find(int x)
{
	if(x!=p[x]){
		p[x]=find(p[x]);
	}
	return p[x];
}
int main()
{
	cin>>n>>D;
	for(int i=1;i<=n;i++)p[i]=i;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
			if(a[i][j]==1){
				int a1=find(i);
				int b1=find(j);
				if(a1!=b1){
					p[a1]=b1;
				}
			}
		}
	}
	if(n==1){
		cout<<0<<endl;
		return 0;
	}
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(p[i]==i){
			cnt++;
		}
	}
	if(cnt>=2){
		cout<<-1<<endl;
	}
	else{
		cout<<2*D<<endl;
	}
	return 0;
} 
